﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using SISTEMA_ALPROVIDE.Model;

namespace SISTEMA_ALPROVIDE
{
    public partial class fmUsuario : Form
    {
        private ConexionBD con;
        private MySqlCommand ComandoBD;
        private MySqlDataAdapter DataAdapterBD;
        private DataSet Datos;
        private DataSet Datos2;

        public fmUsuario()
        {
            InitializeComponent();
            //----- inicializar componentes de acceso a la base de datos             
            DataAdapterBD = new MySqlDataAdapter();
            Datos = new DataSet();
            Datos2 = new DataSet();
            con = new ConexionBD();
            cBPerfil.Items.Add("Selecciona Perfil");
            cBPerfil.Items.Add("Vendedor");
            cBPerfil.Items.Add("Administrador");
            cBPerfil.Items.Add("Almacenero");
            fillDataGrid();
            
        }
        private void buCargarFoto_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                String Dir = openFileDialog1.FileName;
                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                Bitmap Picture = new Bitmap(Dir);
                pictureBox1.Image=(Image)Picture;
            }
        }
        private void InicializarRegistro()
        {
            //----inicializar atributos

            txtIDusuario.Text = "";
            txtDNI.Text = "";
            txtNombre.Text = "";
            txtAPaterno.Text = "";
            txtAMaterno.Text = "";
            txtDireccion.Text = "";
            txtTelefono.Text = "";
            txtMovil.Text = "";
            txtEmail.Text = "";
            txtPassword.Text = "";
            txtPregunta.Text = "";
            txtRepuestaSecreta.Text = "";
            //----poner el foco
            txtDNI.Focus();
        }
        private void ProcesarGrabar()
        {
            
           // Verficar si clave existe  o no en la base de datos
            if (ExisteUsuario()){
                ModificarUsuario();
                ModificarPersona();
                fillDataGrid();
                
            }
            else
            {
                InsertarUsuario();

            }    
            //Inicializar Registro
            InicializarRegistro();
        }

        private void InsertarUsuario()
        {
            con.getConexion.Open();
            //--Crear Sentencia Insert
            int dni = int.Parse(txtDNI.Text);
            String TextoSQL = "INSERT INTO usuario " + " VALUES ('" + txtIDusuario.Text + "','" + txtPassword.Text+ "','" 
                                                                 +txtPregunta.Text+"','" + txtRepuestaSecreta.Text +"','"
                                                                 + txtIDusuario.Text + "'," + dni + ")";
            //--Crear Comando SQL
            ComandoBD = new MySqlCommand(TextoSQL, con.getConexion);
            //--Ejecutar Comando
            ComandoBD.ExecuteNonQuery();
            InsertarUsuarioComoPersona();
            InsertarUsuarioConPerfil();            
            con.getConexion.Close();
            fillDataGrid();
        }   
        //server=50.87.33.40,name=loitay,port=3306

         private void InsertarUsuarioConPerfil()
        {
            //int id = int.Parse(txtIDusuario.Text);
            //--Crear Sentencia Insert
            String TextoSQL = "INSERT INTO perfil " + " VALUES ( '" + txtIDusuario.Text + "','" + cBPerfil.Text  
                               +"','" + txtNombre.Text +"')"; 
            //--Crear Comando SQL
            ComandoBD = new MySqlCommand(TextoSQL, con.getConexion);
            //--Ejecutar Comando
            ComandoBD.ExecuteNonQuery();
            con.getConexion.Close();
        }
         private void InsertarUsuarioComoPersona()
         {
             String fechaNac = dtimePickerNac.Value.Date.ToString("yyyy-MM-dd");
             int telefono = int.Parse(txtTelefono.Text);
             int dni = int.Parse(txtDNI.Text);
             int tipo = 1;
             //--Crear Sentencia Insert
             String TextoSQL = "INSERT INTO persona " + " VALUES (" + dni 
                                +",'"+ txtNombre.Text
                                + "','" + txtAPaterno.Text
                                + "','" + txtAMaterno.Text
                                + "','" + txtDireccion.Text
                                + "','" + txtEmail.Text
                                + "'," + telefono
                                + ",'" + fechaNac
                                + "','"+ txtMovil.Text  
                                + "',"+ 1 +")";

             //--Crear Comando SQL
             ComandoBD = new MySqlCommand(TextoSQL, con.getConexion);
             //--Ejecutar Comando
             ComandoBD.ExecuteNonQuery();
             //con.getConexion.Close();
         }

         private bool ExistePersona()
         {
             int dni = int.Parse(txtDNI.Text);
             //----generar sentencia SELECT 
             String TextoSQL = "Select * from persona where DNI = " + dni + "";
             //--asigna al DataAdapter
             DataAdapterBD.SelectCommand = new MySqlCommand(TextoSQL, con.getConexion);
             //-----recupera los datos en el dataset
             Datos2 = new DataSet();
             DataAdapterBD.Fill(Datos2);
             //----los datos se llenan en el dataset a aDatos
             con.getConexion.Close();
             return (Datos2.Tables[0].Rows.Count > 0);

         }
        private bool ExisteUsuario()
        {
            //ExistePersona();
            int flag = int.Parse(txtDNI.Text);
            //----generar sentencia SELECT 
            String TextoSQL = "Select * " + " from usuario " + "  where IDEMPLEADO = " + flag + "";
            //--asigna al DataAdapter
            DataAdapterBD.SelectCommand = new MySqlCommand(TextoSQL, con.getConexion);
            //-----recupera los datos en el dataset
            Datos = new DataSet();
            DataAdapterBD.Fill(Datos);
            //----los datos se llenan en el dataset a aDatos
            con.getConexion.Close();
            return (Datos.Tables[0].Rows.Count > 0);
            
        }
        private void ModificarUsuario()
        {
            
            con.getConexion.Open();

            //--Crear Sentencia Insert
            String TextoSQL = "UPDATE usuario " + " set " +
                              " IDUSUARIO = '" + txtIDusuario.Text + "'," +
                              " PASSWORD = '" + txtPassword.Text + "'," +
                              " PREGUNTASECRETA = '" + txtPregunta.Text + "'," +
                              " RESPUESTASECRETA = '" + txtRepuestaSecreta.Text +
                              "' where IDUSUARIO = '" + txtIDusuario.Text + "';";
            //--CRear comando SQl
            ComandoBD = new MySqlCommand(TextoSQL, con.getConexion);
            //Ejecutar Comando
            ComandoBD.ExecuteNonQuery();
            con.getConexion.Close();

        }
        private void ModificarPersona()
        {

            con.getConexion.Open();
            String fechaNac = dtimePickerNac.Value.Date.ToString("yyyy-MM-dd");
            int telefono = int.Parse(txtTelefono.Text);
            int dni = int.Parse(txtDNI.Text);
            //--Crear Sentencia Insert
            String TextoSQL = "UPDATE persona " + "set " +
                              " DNI = " + dni + "," +
                              " NOMBRE = '" + txtNombre.Text + "'," +
                              " APELLIDOP = '" + txtAPaterno.Text + "'," +
                              " APELLIDOM = '" + txtAMaterno.Text + "'," +
                              " DIRECCION = '" + txtDireccion.Text + "'," +
                              " EMAIL = '" + txtEmail.Text + "'," +
                              " TELEFONO = '" + telefono + "'," +
                              " fechaNacimiento = '" + fechaNac + "'," +
                              " movil = '" + txtMovil.Text + "'" +
                              " where DNI = " + dni + ";";
            //--CRear comando SQl
            ComandoBD = new MySqlCommand(TextoSQL, con.getConexion);
            //Ejecutar Comando
            ComandoBD.ExecuteNonQuery();
            con.getConexion.Close();

        }
        private void EliminarRegistro()
        {

            con.getConexion.Open();
            //--Crear Sentencia Insert
            String TextoSQL = "DELETE FROM usuario WHERE IDUSUARIO ='"+txtIDusuario.Text+"'";
           // DELETE FROM usuario WHERE IDUSUARIO IN (registros_seleccionados)
            //--CRear comando SQl
            ComandoBD = new MySqlCommand(TextoSQL, con.getConexion);
            //Ejecutar Comando
            ComandoBD.ExecuteNonQuery();

            con.getConexion.Close();

        }
        private void buGuardar_Click(object sender, EventArgs e)
        {
            ProcesarGrabar();
        }

        private void buLimpiar_Click(object sender, EventArgs e)
        {
            InicializarRegistro();
        }

        private void buEliminar_Click(object sender, EventArgs e)
        {
            EliminarRegistro();
            InicializarRegistro();
            fillDataGrid();
        }

        private void buMostrar_Click(object sender, EventArgs e)
        {
            
        }

        private void fmUsuario_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'm20067005DataSet.persona' Puede moverla o quitarla según sea necesario.
            ///this.personaTableAdapter.Fill(this.m20067005DataSet.persona);
         
        }

        private void txtDNI_Leave(object sender, EventArgs e)
        {
            
                //if (txtDNI.Text.CompareTo("") == 0)
                //    txtDNI.Focus();
                //else
                //    if (ExistePersona())
                //        RecuperarRegistro();
                //    else
                //    {//----inicializar atributos 
                //        txtIDusuario.Text = "";
                //        txtNombre.Text = "";
                //        txtAPaterno.Text = "";
                //        txtAMaterno.Text = "";
                //        txtDireccion.Text = "";
                //        txtTelefono.Text = "";
                //        txtMovil.Text = "";
                //        txtEmail.Text = "";
                //        txtPassword.Text = "";
                //        txtPregunta.Text = "";
                //        txtRepuestaSecreta.Text = "";

                //    }
            
        }
//================================================================================================
        private void RecuperarRegistro()
        {
            //--------Recuperar atributos                       
            txtNombre.Text = Datos2.Tables[0].Rows[0]["NOMBRE"].ToString();
            txtAPaterno.Text = Datos2.Tables[0].Rows[0]["APELLIDOP"].ToString();
            txtAMaterno.Text = Datos2.Tables[0].Rows[0]["APELLIDOM"].ToString();
            txtDireccion.Text = Datos2.Tables[0].Rows[0]["DIRECCION"].ToString();
            txtTelefono.Text = Datos2.Tables[0].Rows[0]["TELEFONO"].ToString();
            txtMovil.Text = Datos2.Tables[0].Rows[0]["movil"].ToString();
            txtEmail.Text = Datos2.Tables[0].Rows[0]["EMAIL"].ToString();
            ExisteUsuario();
            txtIDusuario.Text = Datos.Tables[0].Rows[0]["IDUSUARIO"].ToString();
            txtPassword.Text = Datos.Tables[0].Rows[0]["PASSWORD"].ToString();
            txtPregunta.Text = Datos.Tables[0].Rows[0]["PREGUNTASECRETA"].ToString();
            txtRepuestaSecreta.Text = Datos.Tables[0].Rows[0]["RESPUESTASECRETA"].ToString();
            

             //fALTA recuperar FECHA NACIMIENTO
        }
        public void fillDataGrid()
        {
            //string ConnectionString = "Server=aries.lab.inf.pucp.edu.pe;Database=m20067005;Uid=m20067005;Pwd=u6c7qm;Convert Zero Datetime=True";
            string ConnectionString = "Server=50.87.33.40;user=pardoyel_loitay;database=pardoyel_loitay;port=3306;password=loitay123";
            MySqlConnection connection;
            connection = new MySqlConnection(ConnectionString);
            connection.Open();

           // String strsql = "SELECT persona.DNI, usuario.IDUSUARIO, usuario.PASSWORD, usuario.PREGUNTASECRETA, usuario.RESPUESTASECRETA, usuario.IDPERFIL, usuario.IDEMPLEADO FROM usuario, persona;";
            String strsql = "SELECT  usuario.IDUSUARIO, usuario.PASSWORD, usuario.PREGUNTASECRETA, usuario.RESPUESTASECRETA, usuario.IDPERFIL FROM usuario";
            
            DataSet ds = new DataSet();
            MySqlDataAdapter adapter = new MySqlDataAdapter(strsql, connection);
            adapter.Fill(ds);
            dtgridUsuario.DataSource = ds.Tables[0];

            //String strgl2 = "Select DNI From persona";
            //DataSet ds2 = new DataSet();
            //MySqlDataAdapter adapter2 = new MySqlDataAdapter(strgl2, connection);

            //dtgridUsuario. = ds2.Tables["DNI"].Columns["DNI"];
        }

        private void buBuscar_Click(object sender, EventArgs e)
        {
            if (txtDNI.Text.CompareTo("") == 0)
                txtDNI.Focus();
            else
                if (ExistePersona())
                    RecuperarRegistro();
                else
                {//----inicializar atributos 
                    txtIDusuario.Text = "";
                    txtNombre.Text = "";
                    txtAPaterno.Text = "";
                    txtAMaterno.Text = "";
                    txtDireccion.Text = "";
                    txtTelefono.Text = "";
                    txtMovil.Text = "";
                    txtEmail.Text = "";
                    txtPassword.Text = "";
                    txtPregunta.Text = "";
                    txtRepuestaSecreta.Text = "";

                }
        }
    
   }
    
}
